// 导入 Vue Router 的 createRouter 和 createWebHistory 方法以及 RouteRecordRaw 类型
import { createRouter, createWebHistory, type RouteRecordRaw } from 'vue-router'

// 导入主布局组件 MainLayout
import MainLayout from '@/layouts/MainLayout.vue'

// 定义应用的路由配置数组
export const routes: RouteRecordRaw[] = [
  {
    // 登录页面路由配置
    path: '/login',
    component: () => import('@/views/login/LoginPage.vue'), // 按需加载登录页面组件
    meta: { hidden: true }, // 隐藏在菜单中
  },
  {
    // 根路径重定向到工作台
    path: '/',
    redirect: '/workbench', // 重定向到 /workbench 路径
    meta: { hidden: true }, // 隐藏在菜单中
  },
  {
    // 工作台路由配置
    path: '/workbench',
    component: MainLayout, // 使用主布局组件
    children: [
      {
        // 默认子路由指向工作台页面
        path: '',
        component: () => import('@/views/workbench/WorkbenchPage.vue'), // 按需加载工作台页面组件
        meta: { title: '工作台', icon: 'workbench' }, // 设置页面标题和图标
      },
    ],
  },
  {
    // 园区管理路由配置
    path: '/park',
    component: MainLayout, // 使用主布局组件
    meta: {
      title: '园区管理', // 设置页面标题
      icon: 'park', // 设置页面图标
      permission: 'park', // 设置权限标识
    },
    children: [
      {
        // 楼宇管理子路由
        path: 'building',
        meta: { title: '楼宇管理', permission: 'park:building' }, // 设置页面标题和权限标识
        component: () => import('@/views/park/ParkBuilding.vue'), // 按需加载楼宇管理组件
      },
      {
        // 企业管理子路由
        path: 'enterprise',
        meta: { title: '企业管理', permission: 'park:enterprise' }, // 设置页面标题和权限标识
        component: () => import('@/views/park/ParkEnterprise.vue'), // 按需加载企业管理组件
      },
    ],
  },
  {
    // 行车管理路由配置
    path: '/parking',
    component: MainLayout, // 使用主布局组件
    meta: { title: '行车管理', icon: 'car', permission: 'parking' }, // 设置页面标题、图标和权限标识
    children: [
      {
        // 区域管理子路由
        path: 'area',
        component: () => import('@/views/car/CarArea.vue'), // 按需加载区域管理组件
        meta: { title: '区域管理', permission: 'parking:area' }, // 设置页面标题和权限标识
      },
      {
        // 月卡管理子路由
        path: 'card',
        component: () => import('@/views/car/CarCard.vue'), // 按需加载月卡管理组件
        meta: { title: '月卡管理', permission: 'parking:card' }, // 设置页面标题和权限标识
      },
      {
        // 停车缴费管理子路由
        path: 'pay',
        component: () => import('@/views/car/CarPay.vue'), // 按需加载停车缴费管理组件
        meta: { title: '停车缴费管理', permission: 'parking:payment' }, // 设置页面标题和权限标识
      },
      {
        // 计费规则管理子路由
        path: 'rule',
        component: () => import('@/views/car/CarRule.vue'), // 按需加载计费规则管理组件
        meta: { title: '计费规则管理', permission: 'parking:rule' }, // 设置页面标题和权限标识
      },
    ],
  },
  {
    // 物业费管理路由配置
    path: '/propety',
    component: MainLayout, // 使用主布局组件
    children: [
      {
        // 物业费管理子路由
        path: 'cost',
        component: () => import('@/views/property/PropertyPage.vue'), // 按需加载物业费管理组件
        meta: { title: '物业费管理', icon: 'property' }, // 设置页面标题和图标
      },
    ],
  },
  {
    // 一体杆管理路由配置
    path: '/pole',
    component: MainLayout, // 使用主布局组件
    meta: {
      title: '一体杆管理', // 设置页面标题
      icon: 'rod', // 设置页面图标
      permission: 'pole', // 设置权限标识
    },
    children: [
      {
        // 一体杆管理子路由
        path: 'info',
        component: () => import('@/views/rod/RodManage.vue'), // 按需加载一体杆管理组件
        meta: { title: '一体杆管理', permission: 'pole:info' }, // 设置页面标题和权限标识
      },
      {
        // 告警记录子路由
        path: 'waring',
        component: () => import('@/views/rod/RodWarn.vue'), // 按需加载告警记录组件
        meta: { title: '告警记录', permission: 'pole:warning' }, // 设置页面标题和权限标识
      },
    ],
  },
  {
    // 系统管理路由配置
    path: '/sys',
    component: MainLayout, // 使用主布局组件
    meta: { title: '系统管理', icon: 'system', permission: 'sys' }, // 设置页面标题、图标和权限标识
    children: [
      {
        // 角色管理子路由
        path: 'role',
        component: () => import('@/views/system/SystemRole.vue'), // 按需加载角色管理组件
        meta: { title: '角色管理', permission: 'sys:role' }, // 设置页面标题和权限标识
      },
      {
        // 员工管理子路由
        path: 'user',
        component: () => import('@/views/system/SystemEmployee.vue'), // 按需加载员工管理组件
        meta: { title: '员工管理', permission: 'sys:user' }, // 设置页面标题和权限标识
      },
    ],
  },
  {
    // 404 页面路由配置
    path: '/:pathMatch(.*)*',
    component: () => import('@/views/NotFound.vue'), // 按需加载 404 页面组件
    meta: { hidden: true }, // 隐藏在菜单中
  },
]

// 创建 Vue Router 实例
const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL), // 使用 HTML5 History 模式，并设置基础 URL
  scrollBehavior: () => ({ top: 0 }), // 滚动行为配置，每次导航后滚动到顶部
  routes, // 注册路由配置
})

// 导出 Vue Router 实例
export default router
